package com.ruoyi.parking.mapper;

import java.util.List;
import com.ruoyi.parking.domain.ParkingSpace;
import org.apache.ibatis.annotations.Param;

/**
 * 车位管理Mapper接口
 * 
 * @author ruoyi
 * @date 2025-10-27
 */
public interface ParkingSpaceMapper 
{
    /**
     * 查询车位管理
     * 
     * @param id 车位管理主键
     * @return 车位管理
     */
    public ParkingSpace selectParkingSpaceById(Long id);

    /**
     * 查询车位管理列表
     * 
     * @param parkingSpace 车位管理
     * @return 车位管理集合
     */
    public List<ParkingSpace> selectParkingSpaceList(ParkingSpace parkingSpace);

    /**
     * 检查车位编号是否存在（同一停车场内唯一）
     * 
     * @param lotId 停车场ID
     * @param spaceCode 车位编号
     * @param excludeId 排除的ID（用于更新时排除自己）
     * @return 车位数量
     */
    public int countByLotAndCode(@Param("lotId") Long lotId, @Param("spaceCode") String spaceCode, @Param("excludeId") Long excludeId);

    /**
     * 统计指定停车场的车位数量
     * 
     * @param lotId 停车场ID
     * @param currentStatus 状态
     * @return 车位数量
     */
    public int countByLotAndStatus(@Param("lotId") Long lotId, @Param("currentStatus") String currentStatus);

    /**
     * 新增车位管理
     * 
     * @param parkingSpace 车位管理
     * @return 结果
     */
    public int insertParkingSpace(ParkingSpace parkingSpace);

    /**
     * 修改车位管理
     * 
     * @param parkingSpace 车位管理
     * @return 结果
     */
    public int updateParkingSpace(ParkingSpace parkingSpace);

    /**
     * 删除车位管理
     * 
     * @param id 车位管理主键
     * @return 结果
     */
    public int deleteParkingSpaceById(Long id);

    /**
     * 批量删除车位管理
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteParkingSpaceByIds(Long[] ids);
}
